\section{python视觉应用}

\subsection{ Pillow库}
Pillow是Python中常用的图像处理库之一。它提供了许多操作图像的函数，如调整大小、滤波操作等。这是Python中最好用的图像处理库之一。要使用这个库我们首先需要再命令行中输入如下的命令：
\begin{lstlisting}
pip install pillow
\end{lstlisting}
我们可以通过一个简单的代码片段来展示这个库是如何工作的。让我们使用Pillow来增加对比度，让深色图像变得更漂亮一些。
代码如下：
\begin{lstlisting}
from PIL import Image,ImageEnhance
img_original = Image.open("dark.jpg")
img_original.show("Original Image")
img = ImageEnhance.Contrast(img_original)
img.enhance(3.8).show("Image With More Contrast")
\end{lstlisting}
在这个过程中我们遇到了一个问题:
\begin{lstlisting}
    ModuleNotFoundError: No module named 'PIL'
\end{lstlisting}
这里就不得不提到pillow库的缺点了，它已经很久没有进行更新和维护了，所以我们下载库的命令应该改为
\begin{lstlisting}
    pip install Pillow
\end{lstlisting}
最后的结果如图\ref{pillow库效果}

我们可以发现原图因为亮度较低，细节不够清晰。使用Pillow增强对比度后，图片中的暗部和亮部之间的差异更加明显，原本隐藏在阴影中的细节得以显现，整体图像看起来更加生动、清晰。

\begin{figure}[htb]
	\centering
	\includegraphics[width=\linewidth]{assets/images/屏幕截图 2025-09-15 162545.png}
	\caption{pillow库效果}
	\label{pillow库效果}
\end{figure}

\subsection{ Numpy库}
NumPy代表Numerical Python。它是一个Python库，可以帮助我们处理所有类型的科学计算。NumPy是在执行任何类型的数据预处理或数据科学相关任务时导入的第一个库。此外，它还可以用来进行图像处理操作。
使用NumPy，我们可以轻松地操纵图像的RGB值。在操作之前我们同样需要下载这个库，在终端中输入：
\begin{lstlisting}
    pip install numpy
\end{lstlisting}
我们可以进行如下的操作：
\begin{lstlisting}
from PIL import Image
import numpy as np
img = np.array(Image.open('0.jpg'))
img_red = img.copy()
img_red[:, :, (1, 2)] = 0
img_green = img.copy()
img_green[:, :, (0, 2)] = 0
img_blue = img.copy()
img_blue[:, :, (0, 1)] = 0
img_ORGB = np.concatenate((img,img_red, img_green, img_blue), axis=1)
img_converted = Image.fromarray(img_ORGB)
img_converted.show() ## Combine Image Contains all four images

\end{lstlisting}

结果如图\ref{Numpy库效果}
\begin{figure}[htb]
	\centering
	\includegraphics[width=\linewidth]{assets/images/屏幕截图 2025-09-15 163235.png}
	\caption{Numpy库效果}
	\label{Numpy库效果}
\end{figure}

我们运行代码并查看输出时，看到了三个灰度图像分别代表原始彩色图像的红色、绿色和蓝色分量。通过这些单一颜色通道的图像，我们可以观察到不同颜色信息如何贡献于最终合成的全彩图像。

\subsection{ Scipy库}
cipy是Python中主要用于数学和科学计算的库，但同时它也可以用于处理多维图像。这是一个非常大的库，包含许多科学计算的工具。当使用Scipy库进行图像处理时，我们只需导入scipy.ndimage模块即可。
使用如下的命令安装\texttt{scipy}库：
\begin{lstlisting}
    pip install scipy
\end{lstlisting}

使用该库进行高斯模糊的样例代码如下：
\begin{lstlisting}
from scipy import ndimage
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

image = Image.open('noisy_photo.jpg').convert('L')
img_array = np.array(image).astype(float) 

smoothed_array = ndimage.gaussian_filter(img_array, sigma=2)

plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(img_array, cmap='gray')
plt.title('Original (Noisy)')

plt.subplot(1, 2, 2)
plt.imshow(smoothed_array, cmap='gray')
plt.title('Gaussian Smoothed')

plt.show()
\end{lstlisting}
我们在进行操作时发现了如下的问题：
\begin{lstlisting}
Traceback (most recent call last):
  File "d:\test\system_develop\image3.py", line 4, in <module>
    import matplotlib.pyplot as plt
ModuleNotFoundError: No module named 'matplotlib'
\end{lstlisting}
这是因为我们python环境中没有matplotlib库，我们需要在环境中安装这个库：
\begin{lstlisting}
    pip install matplotlib
\end{lstlisting}

运行结果如图\ref{Scipy库}
\begin{figure}[htb]
	\centering
	\includegraphics[width=\linewidth]{assets/images/屏幕截图 2025-09-15 164517.png}
	\caption{Scipy库}
	\label{Scipy库}
\end{figure}

我们可以发现处理前的图像含有噪点，可能会影响视觉体验或后续分析任务。应用SciPy提供的高斯模糊滤波器后，噪声被有效减少，图像变得更加平滑，细节部分虽然略有模糊但整体视觉效果更为舒适，适合进一步的图像处理或分析操作。

\subsection{ Opencv库}
OpenCV是最常用的一种图像处理库，可以方便地与网络摄像头、图像和视频进行交互。它可以执行多种实时任务，于2000年首次发布。它因其简单性和代码可读性而出名。目前，它主要用于计算机视觉任务，如人脸检测和识别、目标检测等。
安装该库的命令如下：
\begin{lstlisting}
    pip install opencv-python
\end{lstlisting}

使用该库，进行crop操作的样例如下：
\begin{lstlisting}
import cv2
img = cv2.imread("images/test.jpg")
imgCropped = img[50:283,25:190]
shape = imgCropped.shape
print(shape[0])
imgCropped = cv2.resize(imgCropped,(shape[0]*12//10,shape[1]*2))
cv2.imshow("Image cropped",imgCropped)
cv2.imshow("Image",img)
cv2.waitKey(0)

\end{lstlisting}    

操作结果如图\ref{Opencv库效果}
\begin{figure}[htb]
	\centering
	\includegraphics[width=\linewidth]{assets/images/屏幕截图 2025-09-15 165001.png}
	\caption{Opencv库效果}
	\label{Opencv库效果}
\end{figure}

\subsection{Pgmagick库}
Pgmagick是Python库中GraphicsMagick的补充，它提供了许多图像处理的功能，比如调整大小、旋转、锐化、渐变等操作。下载安装命令如下：
\begin{lstlisting}
    pip install pgmagick
\end{lstlisting}

我们可以利用该库进行缩放：
\begin{lstlisting}
from pgmagick.api import Image 
img = Image('fox.png') 
img.scale((150, 100), 'fox_scaled')
\end{lstlisting}

在这个过程中我们遇到了一个问题，如图\ref{Pgmagick出现的问题}
\begin{figure}[htb]
	\centering
	\includegraphics[width=\linewidth]{assets/images/屏幕截图 2025-09-15 165445.png}
	\caption{Pgmagick出现的问题}
	\label{Pgmagick出现的问题}
\end{figure}

从错误信息来看，pgmagick 安装失败的原因是 Magick++ 未找到。pgmagick 是一个 Python 绑定库，它依赖于 GraphicsMagick 库（或 ImageMagick 库）来执行图像处理任务。因此，在安装 pgmagick 之前，我们需要先安装 GraphicsMagick 或 ImageMagick。

安装完成后继续我们的操作，结果如图
\begin{figure}[htb]
	\centering
	\includegraphics[width=\linewidth]{assets/images/屏幕截图 2025-09-15 172604.png}
	\caption{Pgmagick库效果}
	\label{Pgmagick库效果}
\end{figure}
